<?php



/**

 * ECSHOP 邮政包裹插件

 * ============================================================================

 * 版权所有 (C) 2005-2007 康盛创想（北京）科技有限公司，并保留所有权利。

 * 网站地址: http://www.ecshop.com

 * ----------------------------------------------------------------------------

 * 这是一个免费开源的软件；这意味着您可以在不用于商业目的的前提下对程序代码

 * 进行修改、使用和再发布。

 * ============================================================================

 * $Author: weberliu $

 * $Date: 2007-09-13 16:15:00 +0800 (星期四, 13 九月 2007) $

 * $Id: post_express.php 12056 2007-09-13 08:15:00Z weberliu $

 */


if (!defined('RUN_FROM_INDEX')){
    die('Access Denied');
}
/* 模块的基本信息 */

if (isset($set_modules) && $set_modules == TRUE)

{

    $i = (isset($modules)) ? count($modules) : 0;



    /* 配送方式插件的代码必须和文件名保持一致 */

    $modules[$i]['code']    =  basename(__FILE__, '.php');
    $modules[$i]['pingyin']    =  'expedit';



    $modules[$i]['version'] = '1.0.0';



    /* 配送方式的描述 */

    $modules[$i]['desc']    = '7 - 10 business days';
    $modules[$i]['name']	=	'Standard Shipping';



    /* 保价比例,如果不支持保价则填入false,支持则还需加入calculate_insure()函数。固定价格直接填入固定数字，按商品总价则在数值后加上%  */

    $modules[$i]['insure']  = false;



    /* 配送方式是否支持货到付款 */

    $modules[$i]['cod']     = false;



    /* 插件的作者 */

    $modules[$i]['author']  = 'ECSHOP TEAM';



    /* 插件作者的官方网站 */

    $modules[$i]['website'] = 'http://www.ecshop.com';



    /* 配送接口需要的参数 */

    $modules[$i]['configure'] = array(

                                    array('name' => 'base_fee',    'value'=>15), /* 1000克以内的价格           */

                                    array('name' => 'step_fee',     'value'=>5),  /* 续重每1000克增加的价格 */

									array('name' => 'step_fee1',     'value'=>20),  /* 续重每1000克增加的价格 */

                                );
								
   /*后台计算运费参数 duxueyong添加 2013-12-26*/
   $modules[$i]['real_configure'] = array(
                                    array('name' => 'base_original', 'value' => 15), //运费起步原价 
									array('name' => 'base_discount', 'value' => 1),  //运费起步折扣 取值0到1之间
									array('name' => 'step_original', 'value' => 20), //每克重量的原价 
									array('name' => 'step_discount', 'value' => 1),  //每克重量的折扣 取值0到1之间
									array('name' => 'max_weight', 'value' => 0),     // 运输最大重量,0表示不限
									array('name' => 'overweight_type', 'value' =>1)  //超重处理方式 1表示抛弃 2表示分包         
                                    );


    return;

}



/**

 * 邮政快递包裹费用计算方式

 * ====================================================================================

 * 运距                     首重1000克      5000克以内续重每500克   5001克以上续重500克

 * -------------------------------------------------------------------------------------

 * 500公里及500公里以内     5.00            2.00                    1.00

 * 500公里以上至1000公里    6.00            2.50                    1.30

 * 1000公里以上至1500公里   7.00            3.00                    1.60

 * 1500公里以上至2000公里   8.00            3.50                    1.90

 * 2000公里以上至2500公里   9.00            4.00                    2.20

 * 2500公里以上至3000公里   10.00           4.50                    2.50

 * 3000公里以上至4000公里   12.00           5.50                    3.10

 * 4000公里以上至5000公里   14.00           6.50                    3.70

 * 5000公里以上至6000公里   16.00           7.50                    4.30

 * 6000公里以上             20.00           9.00                    6.00

 * -------------------------------------------------------------------------------------

 * 每件挂号费               3.00

 */

class standard

{

    /*------------------------------------------------------ */

    //-- PUBLIC ATTRIBUTEs

    /*------------------------------------------------------ */



    /**

     * 配置信息

     */

    var $configure;



    /*------------------------------------------------------ */

    //-- PUBLIC METHODs

    /*------------------------------------------------------ */



    /**

     * 构造函数

     *

     * @param: $configure[array]    配送方式的参数的数组

     *

     * @return null

     */

    function __constructor($cfg=array())

    {

        foreach ($cfg AS $key=>$val)

        {

            $this->configure[$val['name']] = $val['value'];

        }

    }



    /**

     * 计算订单的配送费用的函数

     *

     * @param   float   $goods_weight   商品重量

     * @param   float   $goods_amount   商品金额

     * @return  decimal

     */

     function calculate($goods_weight, $goods_amount)

    {

        if ($this->configure['free_money'] > 0 && $goods_amount >= $this->configure['free_money'])

        {

            return 0;

        }

        else

        {

            @$fee = $this->configure['base_fee'];

			if ($goods_weight > 0.1)

			{

				$step=($goods_weight - 0.1)/0.1;

				if(strpos($step,'.')==false){

					$fee += (intval(ceil(($goods_weight - 0.1)/0.1))) * $this->configure['step_fee'];

				}else{

					$fee += (ceil(($goods_weight - 0.1)/0.1)) * $this->configure['step_fee'];

				}

//	             $fee += (ceil(($goods_weight - 0.1)/0.1)) * $this->configure['step_fee'];

			}

			if ($goods_weight==0) {

				$fee=0;

			}


            return $fee;

        }

    }



    /**

     * 查询发货状态

     * 该配送方式不支持查询发货状态

     *

     * @access  public

     * @param   string  $invoice_sn     发货单号

     * @return  string

     */

    function query($invoice_sn)

    {

    	 $form_str = '<a title="'.$invoice_sn.'" rel="nofollow" href="http://www.17track.net/en/result/post.shtml?nums='.$invoice_sn.'" target="_blank">' .$invoice_sn. '</a>';

        return $form_str;

    }



    /**

     *  当保价比例以%出现时，计算保价费用

     *

     * @access  public

     * @param   decimal $tatal_price  需要保价的商品总价

     * @param   decimal $insure_rate  保价计算比例

     *

     * @return  decimal $price        保价费用

     */

    function calculate_insure($total_price, $insure_rate)

    {

        $total_price = ceil($total_price);

        $price = $total_price * $insure_rate;

        if ($price < 0.1)

        {

            $price = 0.1;

        }

        return ceil($price);

    }

}



?>